package com.hqyj.springboot01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.TypeExcludeFilter;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;

/**
 * spring的启动类
 *
 * 写一个helloworld
 * web项目 要求有返回值类型，返回值类型显示在浏览器上
 * web相关的jar包，所以需要导入依赖
 * starter依赖，将常用的依赖按钮聚集在一起，形成单条依赖，以maven的继承方式，进行jar包管理
 * springboot项目里的内容必须写在启动类打包或其子包才可以，
 * 元注解:
// * @Target({ElementType.TYPE})
// * @Retention(RetentionPolicy.RUNTIME)
// * @Documented
// * @Inherited

 * //@SpringBootApplication springboot启动类的核心注解 组合注解 相当于
 *   //  @SpringBootConfiguration
 *              等同于@Configuration注解 Java类只要写这个注解，代表该类是一个配置类
 *   //  @EnableAutoConfiguration 写这个注解，实现自动配置
 *              相当于@AutoConfigurationpackage注解
 *   //  @ComponentScan 组件注解 未来扫描文件的文件的默认配置就在这里设置 默认情况下就是当前的springboot01application所在的包
 *
 *
 */
//@SpringBootApplication
@SpringBootConfiguration
@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
@ComponentScan(basePackages = "com")
@ComponentScan(resourcePattern = "../**/*.class")
public class Springboot01Application {

    public static void main(String[] args) {
        SpringApplication.run(Springboot01Application.class, args);
    }

}
